#include "bsp.h"
#include "ff.h"
#include "bsp_wm8978.h"
#include "string.h"
#include "audio_play.h"
#include "os_obj.h"

//////////////////////////////////////////////////////////////////////////////////
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////

//音乐播放控制器
__audiodev audiodev;

/*****************************************************************************
* @brief   audio_start.
* @param   none
* @return  none
*****************************************************************************/
void audio_start(void)
{
	audiodev.status = 3 << 0; //开始播放+非暂停
	//SAI_Play_Start();
}

/*****************************************************************************
* @brief   audio_stop.
* @param   none
* @return  none
*****************************************************************************/
void audio_stop(void)
{
	audiodev.status = 0;
	//SAI_Play_Stop();
}

/*****************************************************************************
* @brief   audio_get_tnum.
* @param   path
* @return  none
*****************************************************************************/
uu16 audio_get_tnum(uu8 *path)
{
	uu8 res;
	uu16 rval = 0;
	DIR tdir;										//临时目录
	FILINFO *tfileinfo;								//临时文件信息
	tfileinfo = (FILINFO *)malloc(sizeof(FILINFO)); //申请内存
	res = f_opendir(&tdir, (const TCHAR *)path);	//打开目录
	if (res == FR_OK && tfileinfo)
	{
		while (1) //查询总的有效文件数
		{
			res = f_readdir(&tdir, tfileinfo); //读取目录下的一个文件
			if (res != FR_OK || tfileinfo->fname[0] == 0)
				break; //错误了/到末尾了,退出
			
			//res = f_typetell((uu8 *)tfileinfo->fname);
			
			if ((res & 0XF0) == 0X40) //取高四位,看看是不是音乐文件
			{
				rval++; //有效文件数增加1
			}
		}
	}
	free(tfileinfo); //释放内存
	return rval;
}

/*****************************************************************************
* @brief   play  cfg
* @param   none
* @return  none
*****************************************************************************/
void audio_play(void)
{
	audio_get_tnum((uint8_t *)"\\MUSIC");
	
	WM8978_ADDA_Cfg(1, 0);				   //开启DAC
	WM8978_Input_Cfg(0, 0, 0);			   //关闭输入通道
	WM8978_Output_Cfg(1, 0);			   //开启DAC输出
	
	audio_play_song((uint8_t *)"musi.wav");
}

/*****************************************************************************
* @brief   play  file
* @param   none
* @return  none
*****************************************************************************/
uu8 audio_play_song(uu8 *fname)
{
	uu8 res;

	res = wav_play_song(fname);
	
	return 0;
}
